// 可以理解为一个类型安全的any，适用于：不确定数据的具体类型
let u: unknown
u = 99
u = false
u = 'hello'

let x: string
// x = u // unknown类型不能赋值给其他类型，因为不知道u是什么类型，只能直接赋值给any和unknown
let a: unknown
a = u
let b: any
b = u
u = b

// 第一种
if (typeof u === 'string') {
  x = u
}

// 第二种 （断言两种写法）
x = u as string
x = <string>u

let str1: string = 'asdf'
console.log(str1.toUpperCase())

let str2: any = 'asdf'
console.log(str2.toUpperCase())

let str3: unknown = 'asdf'
// console.log((<string>str3).toUpperCase()) // 必须断言或者判断类型才能使用

export {}
